// 登录测试工具
import axios from 'axios'

// 创建axios实例，与request.js中的配置保持一致
const testRequest = axios.create({
  baseURL: '/api/demo',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  },
  withCredentials: true
})

/**
 * 测试登录功能
 * @param {string} username - 用户名
 * @param {string} password - 密码
 */
export const testLogin = async (username, password) => {
  try {
    console.log('开始测试登录:', { username, password });
    
    // 清除之前的token和用户信息，确保测试环境干净
    localStorage.removeItem('token');
    localStorage.removeItem('userInfo');
    
    // 发送登录请求
    const startTime = Date.now();
    const response = await testRequest.post('/login', {
      username,
      pwd: password
    });
    const endTime = Date.now();
    
    console.log(`登录请求耗时: ${endTime - startTime}ms`);
    console.log('登录响应:', response);
    
    if (response.data) {
      console.log('登录响应数据:', response.data);
      console.log('登录状态码:', response.status);
      console.log('登录响应头:', response.headers);
      
      // 检查响应中的success字段
      if (response.data.success) {
        console.log('✅ 登录成功');
        console.log('用户信息:', response.data.userInfo || '无');
        console.log('Token:', response.data.token || '无');
        
        // 保存token和用户信息到localStorage
        if (response.data.token) {
          localStorage.setItem('token', response.data.token);
          console.log('Token已保存到localStorage');
        }
        if (response.data.userInfo) {
          localStorage.setItem('userInfo', JSON.stringify(response.data.userInfo));
          console.log('用户信息已保存到localStorage');
        }
      } else {
        console.log('❌ 登录失败');
        console.log('失败原因:', response.data.message || '未知原因');
      }
    } else {
      console.log('❌ 登录响应数据为空');
    }
    
    return response.data;
  } catch (error) {
    console.error('❌ 登录请求异常:', error);
    if (error.response) {
      console.error('错误响应状态码:', error.response.status);
      console.error('错误响应数据:', error.response.data);
      console.error('错误响应头:', error.response.headers);
    } else if (error.request) {
      console.error('❌ 没有收到响应，请检查网络连接或后端服务');
      console.error('请求详情:', error.request);
    } else {
      console.error('❌ 请求配置错误:', error.message);
    }
    return null;
  }
}

/**
 * 测试注册功能
 * @param {object} userData - 用户注册数据
 */
export const testRegister = async (userData) => {
  try {
    console.log('开始测试注册:', userData);
    
    const startTime = Date.now();
    const response = await testRequest.post('/reg', userData);
    const endTime = Date.now();
    
    console.log(`注册请求耗时: ${endTime - startTime}ms`);
    console.log('注册响应:', response);
    
    if (response.data) {
      console.log('注册响应数据:', response.data);
      console.log('注册状态码:', response.status);
      
      if (response.data.success) {
        console.log('✅ 注册成功');
      } else {
        console.log('❌ 注册失败');
        console.log('失败原因:', response.data.message || '未知原因');
      }
    }
    
    return response.data;
  } catch (error) {
    console.error('❌ 注册请求异常:', error);
    if (error.response) {
      console.error('错误响应状态码:', error.response.status);
      console.error('错误响应数据:', error.response.data);
    }
    return null;
  }
}

/**
 * 快速测试函数 - 同时测试注册和登录
 * @param {string} username - 用户名
 * @param {string} password - 密码
 */
export const quickTest = async (username = 'testuser' + Date.now(), password = 'test123456') => {
  console.log('==================== 开始快速测试 ====================');
  console.log(`测试用户名: ${username}`);
  console.log(`测试密码: ${password}`);
  
  // 先尝试注册
  const registerData = {
    username,
    pwd: password,
    confirmPwd: password,
    age: 20,
    realName: '测试用户',
    email: `${username}@test.com`,
    stuNum: '12345678',
    className: '23软件1班'
  };
  
  console.log('\n----- 测试注册 -----');
  const registerResult = await testRegister(registerData);
  
  if (registerResult && registerResult.success) {
    console.log('\n----- 测试登录 -----');
    await testLogin(username, password);
  }
  
  console.log('\n==================== 测试结束 ====================');
}